# -*- coding: utf-8 -*-
# 使用openai-python库，使用本地ollama部署的deepseek-r1:1.5b模型
# 对轮对话

from openai import OpenAI

# 定义多轮对话
def run_chat_seesion():
    # 初始化客户端
    client = OpenAI(
        base_url="http://localhost:11434/v1", # 指定ollama的base_url，端口11434; /v1 的作用是兼容openai的api
        api_key="ollama" # 使用ollama作为api_key, 本地ollama部署的模型，api_key为无要求
        )
    # 初始化对话历史
    chat_history = []
    # 开始对话
    while True:
        # 获取用户输入
        user_input = input("用户: ")
        # 如果用户输入为空，则结束对话
        if user_input.lower() == "exit":
            print("对话结束")
            break
        # 将用户输入添加到对话历史中
        chat_history.append({"role": "user", "content": user_input})
        # 使用OpenAI的chat.completions.create方法生成回复
        try:
            response = client.chat.completions.create(
                model="deepseek-r1:1.5b", # 指定模型名称
                messages=chat_history, # 传递对话历史给模型
                temperature=0.7, # 控制随机性，值越大，随机性越高
                max_tokens=1024, # 控制生成文本的最大长度
                top_p=1, # 控制随机性，值越小，随机性越高
                frequency_penalty=0, # 控制重复性，值越大，重复性越低
                presence_penalty=0, # 控制新内容的引入，值越大，新内容越少
                # stop=None, # 控制停止符，如果生成的文本包含这些停止符，则停止生成
            )
            reply = response.choices[0].message.content
            print("AI: ", reply)
            # 将回复添加到对话历史中
            chat_history.append({"role": "assistant", "content": reply})
            continue
        except Exception as e:
            print("Error: ", e)
            break

if __name__ == "__main__":
    run_chat_seesion()